import axios from 'axios'
import { Notification } from 'element-ui';
import router from '@/router';

// 创建axios实例
const service = axios.create({
  baseURL: '/einkboard/api/eink/',
  timeout: 120000, // 请求超时时间
})
// 根据cookie的name获取value
function getCookieValue(name) {
  // 将document.cookie字符串按照; 分割成数组
  let cookies = document.cookie.split(';');
  // 遍历cookie数组，寻找指定的cookie
  for (let i = 0; i < cookies.length; i++) {
    let cookie = cookies[i].trim(); // 去除前导和后缀的空格
    // 检查当前cookie是否是目标cookie
    if (cookie.startsWith(name + '=')) {
      // 分割cookie名称和值，并返回值部分
      return cookie.substring(name.length + 1);
    }
  }
  // 如果没有找到，返回null
  return null;
}
// request拦截器
service.interceptors.request.use(
  config => {
    // 如果登录了，有token，则请求携带token
    // Do something before request is sent
    // if (store.state.userInfo.token) {
    //   config.headers['X-Token'] = getToken() // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
    // }
    config.headers.Authorization = getCookieValue('Authorization');
    return config
  },
  error => {
    // Do something with request error
    console.log(error) // for debug
    Promise.reject(error)
  }
)

// respone拦截器
service.interceptors.response.use(
  // response => response,
  /**
   * 下面的注释为通过response自定义code来标示请求状态，当code返回如下情况为权限有问题，登出并返回到登录页
   * 如通过xmlhttprequest 状态码标识 逻辑可写在下面error中
   */
  response => {
    console.error('响应的值是', response);
    if (response.data.code == 500) {
        Notification.error(response.data.msg);
        return Promise.reject('error')
    }
    if (response.data.code == 401) {
      Notification.error('认证信息失效，请重新登录');
      return router.replace({
        path: '/qspace/login'
      })
    }
    return response.data;
    // const res = response.data
    // // 处理异常的情况
    // if (res.code !== 200) {
    //   Message({
    //     message: res.message,
    //     type: 'error',
    //     duration: 5 * 1000,
    //   })
    //   // 403:非法的token; 50012:其他客户端登录了;  401:Token 过期了;
    //   if (res.code === 403 || res.code === 50012 || res.code === 401) {
    //     MessageBox.confirm('你已被登出，可以取消继续留在该页面，或者重新登录', '确定登出', {
    //       confirmButtonText: '重新登录',
    //       cancelButtonText: '取消',
    //       type: 'warning',
    //     }).then(() => {
    //       store.dispatch('FedLogOut').then(() => {
    //         location.reload() // 为了重新实例化vue-router对象 避免bug
    //       })
    //     })
    //   }
    //   return Promise.reject('error')
    // } else {
    //   // 默认只返回data，不返回状态码和message
    //   // 通过 meta 中的 responseAll 配置来取决后台是否返回所有数据(包括状态码，message和data)
    //   const isbackAll = response.config.meta && response.config.meta.responseAll
    //   if(isbackAll){
    //     return res
    //   }else{
    //     return res.data
    //   }
    // }
  },
  error => {
    // console.log('err' + error) // for debug
    // Message({
    //   message: error.message,
    //   type: 'error',
    //   duration: 5 * 1000,
    // })
    return Promise.reject(error)
  }
)

export default service

